package com.mybatis.crudservice.tools;

import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
import com.github.pagehelper.Page;
import com.github.pagehelper.PageHelper;
import lombok.Data;

import java.util.List;

/**
 * @ 描 述 : 封装page类
 * @ 作 者 : 一念〃
 * @ 时 间 : 22:48 2019/5/24
 * @ 备 注 :
 */
@Data
@JsonIgnoreProperties({"pageNum","pageSize","offset","limit","page"})//生成json过滤字段
public class PageInfo<T> {

    private int offset;
    private int limit;
    private int pageNum;
    private int pageSize;
    private List<T> rows;//数据
    private Page<T> page;

    public PageInfo() {}

    /**
     * 构造方法
     * @param pageNum 多少页
     * @param pageSize 每页多少条
     */
    public PageInfo(int pageNum, int pageSize) {
        this.pageNum = pageNum;
        this.pageSize = pageSize;
    }

    /**
     *开始分页
     */
    public void startPage() {
        if (this.limit > 0) {
            this.page = PageHelper.offsetPage(this.offset, this.limit);//从下标为X的开始 每页X条
        } else {
            this.page = PageHelper.startPage(this.pageNum, this.pageSize);//开始分页，页码，条数
        }
    }

    /**
     * @return 总条数
     */
    public long getTotal() {
        return this.page.getTotal();
    }

    /**
     * 设置送条数
     * @param total
     */
    public void setTotal(long total) {
        if (this.page == null) {
            this.page = new Page();
        }
        this.page.setTotal(total);
    }

}
